package com.tbit.uqbike.webmanager.dto;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.tbit.uqbike.convert.easyexcel.*;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 对账财务异常记录
 *
 *
 * @author <a href="mailto:chen.chaoxiong@tbit.com.cn">ChenChaoXiong</a>
 * @since 2024/5/21
 */
@Data
public class AbnormalRecordDTO {

    /**
     * 坏账编号
     */
    @ExcelProperty("坏账编号")
    private String recordId;

    /**
     * 运营区域id
     */
    @ExcelProperty("运营区域id")
    private Integer accountId;

    /**
     * 运营区域名称
     */
    @ExcelProperty("运营区域名称")
    private String accountName;


    /**
     * 商户平台
     * 微信: wechat
     * 支付宝: alipay
     * 汇付: adapay
     */
    @ExcelProperty(value = "商户平台",converter = PaymentChannelConverter.class)
    private String channel;

    /**
     * 收支类型
     * income:收入
     * expend:支出
     */
    @ExcelProperty(value = "收支类型",converter = FlowTypeConverter.class)
    private String flowType;


    /**
     * 对账源数据交易时间
     */
    @ExcelProperty("对账源数据交易时间")
    private Date sourceTradeTime;


    /**
     * 对账源数据交易状态
     * success:成功  fail:失败  unknown:未知
     * @see com.tbit.uqbike.enums.TradeStatusEnum
     */
    @ExcelProperty(value = "对账源数据交易状态",converter = TradeStatusConverter.class)
    private String sourceTradeStatus;


    /**
     * 对账源数据交易金额
     */
    @ExcelProperty("对账源数据交易金额")
    private BigDecimal sourceAmount;

    /**
     * 对账目标数据交易时间
     */
    @ExcelProperty("对账目标数据交易时间")
    private Date targetTradeTime;

    /**
     * 对账目标数据交易状态
     * success:成功  fail:失败  unknown:未知
     * @see com.tbit.uqbike.enums.TradeStatusEnum
     */
    @ExcelProperty(value = "对账目标数据交易状态",converter = TradeStatusConverter.class)
    private String targetTradeStatus;


    /**
     * 对账目标数据交易金额
     */
    @ExcelProperty("对账目标数据交易金额")
    private BigDecimal targetAmount;



    /**
     * 坏账类型
     * 金额不一致: AMOUNT_UNBALANCE
     * 状态不一致: STATUS_UNBALANCE
     * 源数据单边: SOURCE_UNILATERAL
     * 目标数据单边: TARGET_UNILATERAL
     * 跨天: CROSS_DAY
     *
     * @see com.tbit.uqbike.enums.UnBalanceTypeEnum
     */
    @ExcelProperty(value = "坏账类型",converter = UnbalanceTypeConverter.class)
    private String unbalanceType;


    /**
     * 用户名称
     */
    @ExcelProperty("用户名称")
    private String userName;

    /**
     * 用户手机号
     */
    @ExcelProperty("用户手机号")
    private String userPhone;

    /**
     * 业务平台订单号
     */
    @ExcelProperty("业务平台订单号")
    private String outOrderNo;

    /**
     * 商户平台订单号
     */
    @ExcelProperty("商户平台订单号")
    private String ordrNo;

    /**
     * 处理状态
     * handled:已处理
     * unhandled:未处理
     */
    @ExcelProperty(value = "处理状态",converter = BadOrderHandleTypeConverter.class)
    private String processStauts;

    /**
     * 操作人
     */
    @ExcelProperty("操作人")
    private String oprator;

    /**
     * 操作人手机号
     */
    @ExcelProperty("操作人手机号")
    private String opratorPhone;

    /**
     * 操作时间
     */
    @ExcelProperty("操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date processTime;

    /**
     * 备注
     */
    @ExcelProperty("备注")
    private String remark;

}
